package com.telcordia.cvas.rpn;

public class RpnCalculator {
	private OperandStack values = new OperandStack();

	public int getXRegister() {
		return values.peek();
	}

	public void setXRegister(int value) {
		values.replaceTop(value);
	}

	public void enter() {
		values.push(getXRegister());
	}

	public void perform(String operatorName) {
		if ("+".equals(operatorName)) {
			Add add = new Add();
			add.execute(values);
		} else if ("-".equals(operatorName))
			new Subtract().execute(values);
		else if ("!".equals(operatorName))
			new Factorial().execute(values);
		else
			throw new RuntimeException(operatorName + " not registered");
	}

}
